package com.thwj.project.biz.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.thwj.common.annotation.Excel;
import com.thwj.framework.mybatis_plus.MybatisMySQLGeometryHandler;
import lombok.*;
import org.locationtech.jts.geom.Point;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

;

/**
 * 活动对象 biz_activity
 *
 * @author generate
 * @date 2023-06-16
 */

@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("biz_activity")
public class Activity extends Model<Activity>{
private static final long serialVersionUID=1L;

    /** 主键 */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 活动类型（1：常规活动 2：派对） */
            @Excel(name = "活动类型", readConverterExp = "1=：常规活动,2=：派对")
    private Integer type;

    /** 活动分类 */
            @Excel(name = "活动分类")
    private Long categoryId;

    /** 用户id */
            @Excel(name = "用户id")
    private Long userId;

    /** 用户认证种类（ 1：个人 2：俱乐部 ） */
            @Excel(name = "用户认证种类", readConverterExp = "1=：个人,2=：俱乐部")
    private Integer authenticationType;

    /** 是否是官方用户 */
            @Excel(name = "是否是官方用户")
    private Boolean officeUser;

    /** 是否公开展示 */
            @Excel(name = "是否公开展示")
    private Boolean showPublic;

    /***
     * 活动创建关联的商户id
     */
    private Long merchantId;
    /***
     * 产品id
     */
    private Long productId;
    /** 行政区域-省 */
            @Excel(name = "行政区域-省")
    private Long codeProv;

    /** 行政区域-省 */
            @Excel(name = "行政区域-省")
    private String nameProv;

    /** 行政区域-市 */
            @Excel(name = "行政区域-市")
    private Long codeCity;

    /** 行政区域-市 */
            @Excel(name = "行政区域-市")
    private String nameCity;

    /** 行政区域-区 */
            @Excel(name = "行政区域-区")
    private Long codeDistrict;

    /** 行政区域-区 */
            @Excel(name = "行政区域-区")
    private String nameDistrict;

    /** 详细地址 */
            @Excel(name = "详细地址")
    private String address;

    /** 详细地址名称 */
            private String locationName;

    /** 经纬度 */
    /** 经纬度 */
    @TableField(typeHandler = MybatisMySQLGeometryHandler.class)
    private Point location;

    /***
     * 临时暂存 距离 放在最后一行
     */
    @TableField(exist = false)
    private Double distance;

    /** 经度 */
            @Excel(name = "经度")
    private Double longitude;

    /** 维度 */
            @Excel(name = "维度")
    private Double latitude;

    /** 活动标题 */
            @Excel(name = "活动标题")
    private String title;

    /** 封面图 */
            @Excel(name = "封面图")
    private String coverPic;

    /** 图片列表（多个逗号隔开） */
            @Excel(name = "图片列表", readConverterExp = "多=个逗号隔开")
    private String picList;

    /** 活动形式（1：不限 2：限女生 3：限男生） */
            @Excel(name = "活动形式", readConverterExp = "1=：不限,2=：限女生,3=：限男生")
    private Integer formType;

    /** 报名人数 */
            @Excel(name = "报名人数")
    private Integer maxSignUpCount;

    /** 最多女生人数 */
            @Excel(name = "最多女生人数")
    private Integer maxWomanCount;

    /** 最多男生人数 */
            @Excel(name = "最多男生人数")
    private Integer maxManCount;

    /** 开始时间 */
            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
            @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;

    /** 结束时间 */
            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
            @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;

    /** 无责取消种类（1：活动开始前 2：活动2小时前 3：活动4小时前 4: 活动一天前 5: 不可取取消） */
            @Excel(name = "无责取消种类", readConverterExp = "1=：活动开始前,2=：活动2小时前,3=：活动4小时前,4=:,活=动一天前,5=:,不=可取取消")
    private Integer cancelFreeType;

    /** 无责取消时间 */
            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
            @Excel(name = "无责取消时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date cancelFreeDate;

    /** 介绍文案 */
            @Excel(name = "介绍文案")
    private String describeContent;

    @Excel(name = "介绍图片")
    private String describePic;


    /** 收费类型（ 1：AA收费 2：免费） */
            @Excel(name = "收费类型", readConverterExp = "1=：AA收费,2=：免费")
    private Integer chargeType;

    /** 支付渠道（1：线上支付 2：线下支付） */
            @Excel(name = "支付渠道", readConverterExp = "1=：线上支付,2=：线下支付")
    private Integer payWay;

    /** 价格（元/单人） */
            @Excel(name = "价格", readConverterExp = "元=/单人")
    private BigDecimal price;

    /** 优惠类型（1：女生优惠  ..） */
            @Excel(name = "优惠类型", readConverterExp = "1=：女生优惠,.=.")
    private Integer discountType;

    /** 优惠金额 */
            @Excel(name = "优惠金额")
    private BigDecimal discountedPrice;

    /** 联系人 */
            @Excel(name = "联系人")
    private String contactName;

    /** 联系人微信 */
            @Excel(name = "联系人微信")
    private String contactWechat;

    /** 联系电话 */
            @Excel(name = "联系电话")
    private String contactPhone;

    /** 已报名的人数 */
            @Excel(name = "已报名的人数")
    private Integer signUpCount;

    /** 允许挂人人数 */
            @Excel(name = "允许挂人人数")
    private Integer togetherMaxCount;

    /** 活动状态（1：报名中 2：报名已截止 3：进行中 4：已结束 5：已取消） */
            @Excel(name = "活动状态", readConverterExp = "1=：报名中,2=：报名已截止,3=：进行中,4=：已结束,5=：已取消")
    private Integer status;

    /** 报名截止时间 */
            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
            @Excel(name = "报名截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date signUpEndDate;

    /** 取消原因 */
            @Excel(name = "取消原因")
    private String cancelReason;

    /** 取消时间 */
            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
            @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date cancelDate;


    /***
     *
     */
    private String erCodeUrl;

    /** 创建时间 */
            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
            @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;

    /** 乐观锁 */
            @Excel(name = "乐观锁")
    private Integer versionNo;




    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
